% Esercizio 2
close all
clear all
clc

format longE 

f = inline('x.^3+1', 'x');
df = inline('(f(x+h)-f(x))./h','f', 'x', 'h');

x = ones(17,1)
ih = (0:16)'
h = 10.^-ih
yp_vera = ones(17,1)*3;
yp_approx = df(f,x,h);
err_ass = abs(yp_vera-yp_approx);
err_rel = err_ass./abs(yp_vera);

% Tabella
% ih        : vett. col. degli indici i
% h         : vett. col. dei passi
% yp_vera   : valore esatto della derivata
% yp_approx : vett. col. dei rapp. incr.
% err_ass   : vett. col. degli errori assoluti
% err_rel   : vett. col. degli errori relativi

tabella = [ih, h, yp_vera, yp_approx, err_ass, err_rel];

% Stampa a video in modo formattato della tabella
fprintf('%s\n', repmat('-', 1, 80));
fprintf('%4s %8s %13s %20s %14s %14s\n', ...
    'i', 'h', 'df esatta', 'Der. prima approx', ...
    'Err. Ass.', 'Err. Rel.');
fprintf('%s\n', repmat('-', 1, 80));
fprintf('%4d %8.1e %9.6e %20.10e %14.5e %14.5e\n', tabella');
fprintf('%s\n', repmat('-', 1, 80));

% Disegno errore relativo
figure;
h = semilogy(ih, err_rel, '*-');
set(h,'LineWidth',2);